package com.ycsj.goldmedalnewconcept.master.fragment;

import android.content.Context;
import android.content.Intent;
import android.os.Bundle;
import android.os.Environment;
import android.text.TextUtils;
import android.util.Log;
import android.view.View;
import android.view.inputmethod.InputMethodManager;
import android.widget.Button;
import android.widget.EditText;
import android.widget.LinearLayout;
import android.widget.TextView;
import android.widget.Toast;

import com.bigkoo.pickerview.TimePickerView;
import com.google.gson.Gson;
import com.jzxiang.pickerview.TimePickerDialog;
import com.jzxiang.pickerview.data.Type;
import com.jzxiang.pickerview.listener.OnDateSetListener;
import com.mob.MobSDK;
import com.ycsj.common.utils.GsonUtil;
import com.ycsj.common.utils.SPUtil;
import com.ycsj.common.view.dialog.AlertDialogUtil;
import com.ycsj.common.view.scroll.MyGridView;
import com.ycsj.goldmedalnewconcept.R;
import com.ycsj.goldmedalnewconcept.common.HttpAddress;
import com.ycsj.goldmedalnewconcept.common.bean.RedPackageResponse;
import com.ycsj.goldmedalnewconcept.common.http.HttpCallBack;
import com.ycsj.goldmedalnewconcept.common.http.HttpUtils;
import com.ycsj.goldmedalnewconcept.common.util.AccountUtils;
import com.ycsj.goldmedalnewconcept.master.activity.MasterDiyRedPackageActivity;
import com.ycsj.goldmedalnewconcept.master.adapter.DiyRedpackageListAdapter;
import com.ycsj.goldmedalnewconcept.master.bean.DiyRedpackageInfo;
import com.ycsj.goldmedalnewconcept.master.bean.RedPackageInfo;
import com.ycsj.goldmedalnewconcept.teacher.fragment.LazyBaseFragment;
import com.zhy.http.okhttp.OkHttpUtils;
import com.zhy.http.okhttp.callback.StringCallback;

import java.io.File;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Date;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

import cn.sharesdk.framework.Platform;
import cn.sharesdk.framework.Platform.ShareParams;
import cn.sharesdk.onekeyshare.OnekeyShare;
import cn.sharesdk.onekeyshare.ShareContentCustomizeCallback;
import cn.sharesdk.sina.weibo.SinaWeibo;
import okhttp3.Call;

//定制红包Fragment
public class DiyRedPackageFragment extends LazyBaseFragment implements
		View.OnClickListener,OnDateSetListener {

	// 红包金额
	private EditText etMoney;

	// 红包个数
	private EditText etHbgs;

	// 时效限制
	private TextView tvSxxz;

	// 总金额
	private TextView tv_money;

	// 红包个数
	private TextView tv_hbgs;

	// 红包主题
	private EditText etHbzt;

	// 塞进红包的按钮
	private Button btCommit;

	// 总金额
	private String money;

	// 红包个数
	private String redCount;

	// 时效限制
	private String time;

	// 红包主题
	private String hbzt = "学有所成,前程似锦!";

	// 上传的文件地址
	private String filePath;

	// 时间选择控件
	TimePickerView pvTime;


	private String url;


	private String pngName;

	private String themeId = "1";

	private String imagePath;

	private Intent intent;

	protected static final int THEME_ID = 0;

	private String redid;
	private String logo;

	private TextView tv_diy;

	private MyGridView gv_plan;

	private String diyJson;

	private List<RedPackageInfo> mDatas;

	private DiyRedpackageListAdapter mAdapter;

	private String a = "";// 红包方案

	private LinearLayout ll_loading;

	//时间选择器
	private TimePickerDialog mDialog;

	@Override
	protected int getLayoutId() {

		return R.layout.activity_diy_red_package;
	}

	@Override
	public void lazyInit(View view, Bundle savedInstanceState) {

		// 初始化控件
		initView(view);

		// 获取数据
		getData();

		//初始化日期
		showDatePick();
	}

	/**
	 * 获取数据
	 */
	private void getData() {
		// TODO Auto-generated method stub
		mDatas = new ArrayList<RedPackageInfo>();

		int moneys = 0;

		int count = 0;

		// 计算总金额及总个数
		for (int i = 0; i < mDatas.size(); i++) {

			moneys = moneys + (mDatas.get(i).money * mDatas.get(i).number);

			count = count + mDatas.get(i).number;
		}

		tv_money.setText(moneys + "");

		tv_hbgs.setText(count + "");
	}

	/**
	 * 初始化控件
	 */
	private void initView(View view) {

		tvSxxz =  view.findViewById(R.id.tv_sxxz);
		etMoney =  view.findViewById(R.id.et_money);
		etHbgs = view.findViewById(R.id.et_hbgs);
		etHbzt = view.findViewById(R.id.et_hbzt);
		btCommit =  view.findViewById(R.id.bt_sjhb);
		tv_diy = view.findViewById(R.id.tv_diy);
		tv_money =  view.findViewById(R.id.tv_money);
		tv_hbgs =  view.findViewById(R.id.tv_hbgs);
		gv_plan =  view.findViewById(R.id.gv_plan);
		ll_loading = view.findViewById(R.id.ll_loading);
		
		tvSxxz.setOnClickListener(this);
		btCommit.setOnClickListener(this);
		tv_diy.setOnClickListener(this);

		if (TextUtils.isEmpty(AccountUtils.getLogo(getActivity()))) {
			logo = "http://139.129.57.83:8080/Appandroid/redbag.png";
		} else {
			TextUtils.isEmpty(AccountUtils.getLogo(getActivity()));
		}

	}

	@Override
	public void onResume() {
		imagePath = SPUtil.getString(getActivity(), "imagePath");
		themeId = SPUtil.getString(getActivity(), "themeId");
		diyJson = SPUtil.getString(getActivity(), "diyJson");

		if (diyJson != null && !TextUtils.isEmpty(diyJson)) {
			DiyRedpackageInfo info = new DiyRedpackageInfo();
			info = GsonUtil.jsonToBean(diyJson, DiyRedpackageInfo.class);
			if (info.list != null) {
				mDatas = info.list;

				mAdapter = new DiyRedpackageListAdapter(getActivity(), mDatas,
						R.layout.item_diy_redpackagelist);

				getActivity().runOnUiThread(new Runnable() {
					@Override
					public void run() {

						if (mDatas.size() == 0) {
							mAdapter = new DiyRedpackageListAdapter(
									getActivity(), mDatas,
									R.layout.item_diy_redpackagelist);
							if (gv_plan != null) {

								gv_plan.setAdapter(mAdapter);

							} else {

								mAdapter.updateListView(mDatas);

							}

							if (tv_money != null && tv_hbgs != null) {
								tv_money.setText("");
								tv_hbgs.setText("");
							}
						} else {

							if (gv_plan != null) {

								gv_plan.setAdapter(mAdapter);

							} else {

								mAdapter.updateListView(mDatas);

							}

							int moneys = 0;

							int count = 0;

							// 计算总金额及总个数
							for (int i = 0; i < mDatas.size(); i++) {

								moneys = moneys
										+ (mDatas.get(i).money * mDatas.get(i).number);

								count = count + mDatas.get(i).number;
							}

							if (tv_money != null && tv_hbgs != null) {
								tv_money.setText(moneys + "");

								tv_hbgs.setText(count + "");
							}
						}
					}
				});
			}
		}

		Log.e("test", "imagePath" + imagePath);
		Log.e("test", "themeId" + themeId);
		Log.e("test", "diyJson" + diyJson);

		super.onResume();
	}


	/**
	 * 选择日期的方法
	 */
	private void showDatePick() {

		long oneYears = 2L * 365 * 1000 * 60 * 60 * 24L;

		long oneHour = 1L * 1000 * 60 * 60;

		mDialog = new TimePickerDialog.Builder()
				.setCallBack(this)
				.setCancelStringId("取消")
				.setSureStringId("确定")
				.setTitleStringId("选择日期和时间")
				.setYearText("年")
				.setMonthText("月")
				.setDayText("日")
				.setHourText("时")
				.setMinuteText("分")
				.setCyclic(false)
				.setMinMillseconds(System.currentTimeMillis() + oneHour)
				.setMaxMillseconds(System.currentTimeMillis() + oneYears)
				.setCurrentMillseconds(System.currentTimeMillis())
				.setThemeColor(getResources().getColor(R.color.coffee))
//                .setThemeColor(getResources().getColor(R.color.timepicker_dialog_bg))
				.setType(Type.ALL)
				.setWheelItemTextNormalColor(getResources().getColor(R.color.timetimepicker_default_text_color))
				.setWheelItemTextSelectorColor(getResources().getColor(R.color.timepicker_toolbar_bg))
				.setWheelItemTextSize(12)
				.build();

		//默认当前时间
//		currtime = getDateToString(System.currentTimeMillis() + 60 * 1000);
		time = getDateToString(System.currentTimeMillis() + 60 * 1000);
		Log.i("test", "time=" + time);
	}


	@Override
	public void onDateSet(TimePickerDialog timePickerView, long millseconds) {
		time = getDateToString(millseconds);
		tvSxxz.setText(time);
	}


	public String getDateToString(long time) {
		SimpleDateFormat sf = new SimpleDateFormat("yyyy-MM-dd HH:mm");
		Date d = new Date(time);
		return sf.format(d);
	}
	/**
	 * 点击事件
	 *
	 * @param view
	 */
	@Override
	public void onClick(View view) {
		switch (view.getId()) {
		case R.id.tv_sxxz:
			// 时效限制
			InputMethodManager imm = (InputMethodManager) getActivity()
					.getSystemService(Context.INPUT_METHOD_SERVICE);
			imm.hideSoftInputFromWindow(view.getWindowToken(), 0);


			//选择时间
			mDialog.show(getFragmentManager(), "yyyy-MM-dd");


			break;
		case R.id.bt_sjhb:
			// 塞进红包
			judgeAll();
			break;
		case R.id.tv_diy:
			// 定制方案

			DiyRedpackageInfo info = new DiyRedpackageInfo();
			info.list = mDatas;

			String diyJson = GsonUtil.objectToJson(info);

			Intent intent = new Intent(getActivity(),
					MasterDiyRedPackageActivity.class);

			intent.putExtra("diyJson", diyJson);

			startActivity(intent);

			break;
		}
	}

	/**
	 * 点击塞进红包后按钮后的判断完整性方法
	 */
	private void judgeAll() {

		// 获取金额
		money = tv_money.getText().toString().trim();
		if (TextUtils.isEmpty(money) || "0".equals(money)) {
			Toast.makeText(getActivity(), "您未定制红包方案", Toast.LENGTH_SHORT).show();
			return;
		}

		// 红包个数
		redCount = tv_hbgs.getText().toString().trim();
		if (TextUtils.isEmpty(redCount) || "0".equals(redCount)) {
			Toast.makeText(getActivity(), "您未定制红包方案", Toast.LENGTH_SHORT)
					.show();
			return;
		}

		if (mDatas != null && mDatas.size() != 0) {

			for (int i = 0; i < mDatas.size(); i++) {
				if (i == 0) {
					a = mDatas.get(i).money + "-" + mDatas.get(i).number;
				} else {
					a = a + "_" + mDatas.get(i).money + "-"
							+ mDatas.get(i).number;
				}
			}

		} else {
			Toast.makeText(getActivity(), "您未定制红包方案", Toast.LENGTH_SHORT)
					.show();
			return;
		}

		// 时效限制时间
		time = tvSxxz.getText().toString().trim();
		Log.e("time", time);
		if (TextUtils.isEmpty(time)) {
			Toast.makeText(getActivity(), "请选择红包的截止时间", Toast.LENGTH_SHORT)
					.show();
			return;
		}

		if ("红包有效期截止时间".equals(time)) {
			Toast.makeText(getActivity(), "请选择红包的截止时间", Toast.LENGTH_SHORT)
					.show();
			return;
		}

		// 红包主题
		hbzt = etHbzt.getText().toString().trim();

		dialog();
	}

	private void dialog() {

		AlertDialogUtil.showAlertDialog(true, getActivity(), "此红包为定制红包，是否确认发送此红包", new AlertDialogUtil.onListener() {
			@Override
			public void onClickOk() {	ll_loading.setVisibility(ll_loading.VISIBLE);

				if (hbzt == null || "".equals(hbzt)) {
					hbzt = "学有所成,前程似锦!";
				}
				if (themeId == null || "".equals(themeId)) {
					themeId = "1";
				}

				// 请求服务器上传用户填写的相关信息
				if (imagePath == null || "".equals(imagePath)) {

					creatRedPackage(); // 无自定义模板图片

				} else {
					File f = new File(getActivity().getCacheDir(), imagePath);

					creatImageRedPackage();// 有自定义模板图片
				}
			}

			@Override
			public void onClickDismiss() {
			}
		});

	}

	public String getSDPath() {
		File sdDir = null;
		boolean sdCardExist = Environment.getExternalStorageState().equals(
				Environment.MEDIA_MOUNTED); // 判断sd卡是否存在
		if (sdCardExist) {
			sdDir = Environment.getExternalStorageDirectory();// 获取跟目录
		} else {
			sdDir = getActivity().getFilesDir();
		}
		return sdDir.toString();
	}

	private void creatImageRedPackage() {


		String path = getSDPath() + "/goldupload/" + imagePath + ".png";
		File f = new File(path);
		String[] split = path.split("\\/");
		String name = split[split.length - 1];


		Map<String, String> map = new HashMap<>();
		map.put("type", "10");
		map.put("rtype", "2");
		map.put("c", AccountUtils.getAccount(getActivity()));
		map.put("role", AccountUtils.getRole(getActivity()));
		map.put("money", money);
		map.put("persons", redCount);
		map.put("expiration", time);
		map.put("title", hbzt);
		map.put("schoolId", AccountUtils.getSchoolId(getActivity()));
		map.put("schoolName", AccountUtils.getSchoolName(getActivity()));
		map.put("skinId", themeId);
		map.put("havepic", "1");
		if (!TextUtils.isEmpty(a)) {
			map.put("a", a);
		}

		Map<String, File> fileMap = new HashMap<>();
		fileMap.put(System.currentTimeMillis() + ".jpg", f);

		OkHttpUtils.post().url(HttpAddress.SENDREDPAG).params(map).files(name, fileMap).params(map).build().execute(new StringCallback() {


			@Override
			public void onError(Call call, Exception e, int id) {
				ll_loading.setVisibility(ll_loading.GONE);
			}

			@Override
			public void onResponse(String response, int id) {

				String json = response;
				Log.e("imgred", json);
				Gson gson = new Gson();
				RedPackageResponse fromJson = gson.fromJson(json,
						RedPackageResponse.class);
				if (fromJson != null) {
					if ("1".equals(fromJson.state)) {
						Log.e("test", "发红包成功");
						redid = fromJson.redId;

						ShareRedpackage();
					} else {
						Toast.makeText(getActivity(), "服务器开小差了", Toast.LENGTH_SHORT).show();
					}
				}
				ll_loading.setVisibility(ll_loading.GONE);

			}
		});
	}


	private void ShareRedpackage() {

		if (redid == null || "".equals(redid)) {

			Toast.makeText(getActivity(), "服务器开小差了,请重试", Toast.LENGTH_SHORT).show();
			return;
		}
		if (hbzt == null || "".equals(hbzt)) {
			hbzt = "学有所成,前程似锦!";
		}

		// TODO Auto-generated method stub
		MobSDK.init(getActivity(), "12c24ea0b59b0",
				"aae63565fbd69b1acbfcdd0d5ac0b35c");
		OnekeyShare oks = new OnekeyShare();
		// 关闭sso授权
		oks.disableSSOWhenAuthorize();
		oks.setShareContentCustomizeCallback(new ShareContentCustomizeCallback() {

			@Override
			public void onShare(Platform platform, ShareParams paramsToShare) {

				if (SinaWeibo.NAME.equals(platform.getName())) {
					paramsToShare.setTitle("分享");
					paramsToShare.setTitleUrl(HttpAddress.TESTREDPAG
							+ "?rid=" + redid);
					paramsToShare.setTitle("来自"
							+ AccountUtils.getSchoolName(getActivity())
							+ "学校的红包");
					paramsToShare.setText(hbzt);
					paramsToShare
							.setImageUrl(logo);

					paramsToShare.setUrl(HttpAddress.TESTREDPAG
							+ "?rid=" + redid);
					paramsToShare.setComment("");
					paramsToShare.setSite("金牌君");
					paramsToShare.setSiteUrl(HttpAddress.TESTREDPAG
							+ "?rid=" + redid);
				} else {
					paramsToShare.setShareType(Platform.SHARE_WEBPAGE);
					paramsToShare.setTitle("分享");
					paramsToShare.setTitleUrl(HttpAddress.TESTREDPAG
							+ "?rid=" + redid);
					paramsToShare.setTitle("来自"
							+ AccountUtils.getSchoolName(getActivity())
							+ "学校的红包");
					paramsToShare.setText(hbzt);
					paramsToShare
							.setImageUrl(logo);

					paramsToShare.setUrl(HttpAddress.TESTREDPAG
							+ "?rid=" + redid);
					paramsToShare.setComment("");
					paramsToShare.setSite("金牌君");
					paramsToShare.setSiteUrl(HttpAddress.TESTREDPAG
							+ "?rid=" + redid);
				}
			}
		});

		oks.show(getActivity());
	}

	/**
	 * 无图片红包
	 */
	private void creatRedPackage() {

		Map<String, String> map = new HashMap<>();
		map.put("type", "12");
		map.put("rtype", "2");
		map.put("c", AccountUtils.getAccount(getActivity()));
		map.put("role", AccountUtils.getRole(getActivity()));
		map.put("money", money);
		map.put("persons", redCount);
		map.put("expiration", time);
		map.put("title", hbzt);
		map.put("schoolId", AccountUtils.getSchoolId(getActivity()));
		map.put("schoolName", AccountUtils.getSchoolName(getActivity()));
		map.put("skinId", themeId);
		map.put("havepic", "0");
		map.put("a", a);

		HttpUtils.post(HttpAddress.SENDREDPAG, map, this,
				new HttpCallBack<RedPackageResponse>() {

					@Override
					public void onSuccess(RedPackageResponse info) {
						if (info != null) {
							if ("1".equals(info.state)) {
								Log.e("test", "发红包成功");
								redid = info.redId;

								ShareRedpackage();

							} else {
								Toast.makeText(getActivity(), "服务器开小差了", Toast.LENGTH_SHORT).show();
							}
						}
						ll_loading.setVisibility(ll_loading.GONE);
					}

					@Override
					public void onError(String e) {
						ll_loading.setVisibility(ll_loading.GONE);
					}
				});
	}



}
